package org.dyk.mallmanagementsystem.service.goodstype;

import org.dyk.mallmanagementsystem.model.Goods;
import org.dyk.mallmanagementsystem.model.Goodstype;
import org.dyk.mallmanagementsystem.repository.GoodsRepository;
import org.dyk.mallmanagementsystem.repository.GoodstypeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class GoodstypeServiceImpl implements GoodstypeService{
    @Autowired
    private GoodstypeRepository goodstypeRepository;
    @Autowired
    private GoodsRepository goodsRepository;

    /**
     * 所有商品分类 分页
     * @param pageable
     * @return
     */
    @Override
    public Page<Goodstype> findAll(Pageable pageable) {
        return goodstypeRepository.findAll(pageable);
    }

    /**
     * 所有商品分类
     * @return
     */
    @Override
    public List<Goodstype> findAll() {
        return goodstypeRepository.findAll();
    }

    /**
     * 根据主键获取商品分类信息
     * @param tid
     * @return
     */
    @Override
    public Goodstype findByTid(int tid) {
        return  goodstypeRepository.findByTid(tid);
    }

    /**
     * 添加商品分类
     * @param goodstypeName
     * @param goodstypeDescribe
     * @return
     */
    @Override
    public boolean inser(String goodstypeName, String goodstypeDescribe) {
        //验证是否有重复的 商品分类
        Goodstype byGoodstypeName = goodstypeRepository.findByGoodstypeName(goodstypeName);
        if (byGoodstypeName == null){
            //验证通过，添加数据
            Goodstype goodstype = new Goodstype();
            goodstype.setGoodstypeName(goodstypeName);
            goodstype.setGoodstypeDescribe(goodstypeDescribe);
            goodstypeRepository.save(goodstype);
            return true;
        }else {
            //验证未通过
            return false;
        }
    }

    /**
     * 修改商品分类
     * @param tid
     * @param goodstypeName
     * @param goodstypeDescribe
     * @return
     */
    @Override
    public boolean updata(int tid, String goodstypeName, String goodstypeDescribe) {
        try{
            //没有重复商品分类名，添加商品分类
            Goodstype byGoodstypeName = goodstypeRepository.findByGoodstypeName(goodstypeName);
            byGoodstypeName.setTid(tid);
            byGoodstypeName.setGoodstypeName(goodstypeName);
            byGoodstypeName.setGoodstypeDescribe(goodstypeDescribe);
            goodstypeRepository.save(byGoodstypeName);
            return true;
        }catch (Exception e){
            //有重复商品分类
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 删除商品分类
     * @param tid
     * @return
     */
    @Override
    public boolean delete(int tid) {
        //查询商品分类下是否还有商品
        List<Goods> goodsByTid = goodsRepository.findByTid(tid);
        if (goodsByTid.isEmpty()){
            //验证通过，该商品分类下没有商品，删除商品分类
            Goodstype byTid = goodstypeRepository.findByTid(tid);
            goodstypeRepository.delete(byTid);
            return true;
        }else {
            return false;
        }
    }

    /**
     * 自定义查询商品分类名信息
     * @param goodsName
     * @return
     */
    @Override
    public List<Goodstype> selectByGoodstypeName(String goodsName) {
        return goodstypeRepository.selectByGoodstypeName(goodsName);
    }
}
